// 生成器用于生成 "迭代器" 有一个next方法，每次调用后，会生成{value,done}

// const arr  = [...{0:1,1:2,2:3,length:3,[Symbol.iterator]:function(){
//     let idx = 0;
//     return { // 迭代器，每次迭代的时候调用的方法
//         next:()=>{
//             return {value:this[idx],done:idx++ === this.length}
//         }
//     }
// }}]

function* getLesson() {
  let a =  yield "语文";
  console.log(a,14);
  let b = yield "数学";
  console.log(b,16);
  return b;
}

let it = getLesson(); // 这里是给函数传递参数
// 碰到yield 就暂停执行，如果继续则调用next
console.log(it.next()); // 第一次next中传递参数没有任何意义
// console.log(it.next('第一次的处理后结果')); // 第二次调用next的时候传参是给第一次的yield做返回值的
// console.log(it.next('第二次的处理后结果'));
// console.log(it.next());
